// package com.study.spmongodb.book.wwj.char08;
//
// import java.util.ArrayDeque;
// import java.util.Queue;
// import java.util.concurrent.TimeUnit;
// import java.util.concurrent.atomic.AtomicInteger;
//
// /**
//  * @author MI
//  * @version 1.0
//  * @date 2020/11/25 23:16
//  */
// public class BasicThreadPool extends Thread implements ThreadPool {
//     // 初始化线程数量
//     private final int intSize;
//     //线程池最大线程数量
//     private final int maxSize;
//     // 线程池核心线程数量
//     private final int coreSize;
//     //当先活跃的线程数量
//     private int acticeCount;
//
//     //创建线程所需的工厂
//     private final ThreadFactory threadFactory;
//
//     //任务队列
//     private final RunnableQueue runnableQueue;
//
//     //线程池是否已经被shutdown
//     private volatile boolean isShutdown = false;
//     //工作线程队列
//     private final Queue<ThreadTask> threadQueue = new ArrayDeque<>();
//
//     private final static ThreadFactory DEFAULT_THREAD_FACTORY = new DefaultThreadFactory();
//
//     private final long keepAliveTime;
//
//     private final TimeUnit timeUnit;
//     public BasicThreadPool( int initSize ,int maxSize,int coreSize,int queueSize){
//         this(initSize,maxSize,coreSize,);
//
//     }
//
//     public BasicThreadPool(int intSize, int maxSize, int coreSize,
//                            ThreadFactory threadFactory, RunnableQueue runnableQueue, boolean isShutdown, long keepAliveTime, TimeUnit timeUnit) {
//         this.intSize = intSize;
//         this.maxSize = maxSize;
//         this.coreSize = coreSize;
//         this.acticeCount = acticeCount;
//         this.threadFactory = threadFactory;
//         this.runnableQueue = runnableQueue;
//         this.isShutdown = isShutdown;
//         this.keepAliveTime = keepAliveTime;
//         this.timeUnit = timeUnit;
//     }
//
//     @Override
//     public void executre(Runnable runnable) {
//
//     }
//
//     @Override
//     public void shutdown() {
//
//     }
//
//     @Override
//     public int getInitSize() {
//         return 0;
//     }
//
//     @Override
//     public int getMaxSize() {
//         return 0;
//     }
//
//     @Override
//     public int getCoreSize() {
//         return 0;
//     }
//
//     @Override
//     public int getQueueSize() {
//         return 0;
//     }
//
//     @Override
//     public int getActiveCount() {
//         return 0;
//     }
//
//     @Override
//     public boolean isShutdown() {
//         return false;
//     }
//
//     private static class ThreadTask {
//         Thread thread;
//         InternalTask internalTask;
//
//         public ThreadTask(Thread thread, InternalTask internalTask) {
//             this.thread = thread;
//             this.internalTask = internalTask;
//         }
//     }
//
//     private static class DefaultThreadFactory implements ThreadFactory {
//         private static final AtomicInteger GROUP_COUNTER = new AtomicInteger(1);
//
//         private static final ThreadGroup group = new ThreadGroup("MyThreadPool" + GROUP_COUNTER.getAndIncrement());
//
//         private static final AtomicInteger COUNTER = new AtomicInteger(0);
//
//         @Override
//         public Thread createThread(Runnable runnable) {
//             return new Thread(group, runnable, "thread-pool-" + COUNTER.getAndIncrement());
//         }
//     }
// }
